package model

import (
	"gorm.io/gorm"
	"time"
)

type User struct {
	Id        uint           `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	Phone     string         `gorm:"column:phone;type:char(11);comment:手机号;not null;" json:"phone"`                                            // 手机号
	Attention uint           `gorm:"column:attention;type:int UNSIGNED;comment:粉丝量;not null;default:0;" json:"attention"`                      // 粉丝量
	CreatedAt time.Time      `gorm:"column:created_at;type:datetime(3);comment:创建时间;not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"` // 创建时间
	UpdatedAt time.Time      `gorm:"column:updated_at;type:datetime(3);comment:更新时间;not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"` // 更新时间
	DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);comment:删除时间;default:NULL;" json:"deleted_at"`                          // 删除时间
}

func (u *User) TableName() string {
	return "user"
}

// UserFollower 用户关注表
type UserFollower struct {
	Id         uint           `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	FollowerId uint           `gorm:"column:follower_id;type:bigint UNSIGNED;comment:关注者（粉丝）的用户ID;not null;default:0;" json:"follower_id"`      // 关注者（粉丝）的用户ID
	FolloweeId int64          `gorm:"column:followee_id;type:bigint;comment:被关注者（博主）的用户ID ;not null;" json:"followee_id"`                       // 被关注者（博主）的用户ID
	CreatedAt  time.Time      `gorm:"column:created_at;type:datetime(3);comment:创建时间;not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"` // 创建时间
	DeletedAt  gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);comment:删除时间;default:NULL;" json:"deleted_at"`                          // 删除时间
}

func (u *UserFollower) TableName() string {
	return "user_followers"
}

type UserDynamic struct {
	Id        uint           `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	UserId    uint           `gorm:"column:user_id;type:bigint UNSIGNED;comment:用户id;not null;default:0;" json:"user_id"`                      // 用户id
	Content   string         `gorm:"column:content;type:varchar(255);comment:内容;not null;" json:"content"`                                     // 内容
	Types     uint           `gorm:"column:types;type:int UNSIGNED;comment:类型 0:文本 1:图片 2: 视频;not null;default:0;" json:"types"`               // 类型 0:文本 1:图片 2: 视频
	Likes     uint           `gorm:"column:likes;type:int UNSIGNED;comment:点赞量;not null;default:0;" json:"likes"`                              // 点赞量
	CreatedAt time.Time      `gorm:"column:created_at;type:datetime(3);comment:创建时间;not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"` // 创建时间
	UpdatedAt time.Time      `gorm:"column:updated_at;type:datetime(3);comment:更新时间;not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"` // 更新时间
	DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);comment:删除时间;default:NULL;" json:"deleted_at"`                          // 删除时间
}

func (u *UserDynamic) TableName() string {
	return "user_dynamic"
}

type DynamicLike struct {
	Id         uint      `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	DynamicId  uint      `gorm:"column:dynamic_id;type:bigint UNSIGNED;comment:动态id;not null;default:0;" json:"dynamic_id"`                // 动态id
	LikeUserId uint      `gorm:"column:like_user_id;type:bigint UNSIGNED;comment:点赞者id;not null;default:0;" json:"like_user_id"`           // 点赞者id
	CreatedAt  time.Time `gorm:"column:created_at;type:datetime(3);comment:创建时间;not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"` // 创建时间
	UpdatedAt  time.Time `gorm:"column:updated_at;type:datetime(3);comment:更新时间;not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"` // 更新时间
	DeletedAt  time.Time `gorm:"column:deleted_at;type:datetime(3);comment:删除时间;default:NULL;" json:"deleted_at"`                          // 删除时间
}

func (u *DynamicLike) TableName() string {
	return "dynamic_like"
}
